package com.example.jvm.jvm01.lesson06;

import lombok.extern.slf4j.Slf4j;

/**
 * @Description 类的主动引用
 * @Date 2021/7/7
 * @Created by Jonathan
 * <p>
 * 【什么是主动引用？】
 * 1.new一个对象的时候会发生类初始化，调用<clinit>方法。
 * 2.调用类中得静态成员，除了final字段，final被调用但是没有初始化类。
 * 3.调用某个类得静态方法，那这个类一定先初始化，即调用<clinit>方法。
 * 4.反射调用触发类的初始化 即调用<clinit>方法。
 * 5.先初始化父类调用<clinit>方法，再初始化子类调用<clinit>方法。
 * 6.虚拟机启动时，用户需要指定一个执行主类，虚拟机会首先初始化这个主类
 * <p>
 * 【被动引用】
 * 1.子类引用父类静态字段，不会导致子类初始化
 * 2.通过数组定义类引用类，不会触发类的初始化
 * 3.不会触发常量的类的初始化，再编译阶段就会调入类的常量池中
 */
@Slf4j
public class Demo09 {

    public static void main(String[] args) {
        log.info("Demo009.count:{}", Demo009.count);
    }
}
